package cn.jsj.onclock.dao;

import cn.jsj.onclock.pojo.ClockEnt;
import cn.jsj.onclock.pojo.identity.ClockStatusEnum;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 卢斌
 */
@Mapper
public interface ClockDao {

    /**
     * 通过Id查询打卡信息
     *
     * @param clockId   打卡信息Id
     * @return  打卡信息
     */
    ClockEnt getClockEntById(@Param("clockId") Long clockId);


    /**
     * 新增一条打卡信息（需要参数：标签卡Id，用户Id，用户留言）
     *
     * @param clockEnt  打卡信息实体
     */
    void insertClockInfo(ClockEnt clockEnt);


    /**
     * 用户主动签退
     *
     * @param userId    用户Id
     * @return  数据库影响条数
     */
    Integer updateClockFinish(@Param("userId") Long userId);


    /**
     * 系统给用户签退
     *
     * @param userId    用户Id
     * @return  数据库影响条数
     */
    Integer updateClockBreak(@Param("userId") Long userId);


    /**
     * 查询用户相关的打卡记录
     *
     * @param userId        用户Id
     * @param clockStatus   打卡状态
     * @return  该用户的某种状态的打卡记录
     */
    List<ClockEnt> listUserClockRecord(@Param("userId") Long userId, @Param("clockStatus") ClockStatusEnum clockStatus);


}
